1. Field of the Invention
This invention relates generally to file input/output operations in a computer system.
2. Description of the Related Art
Computer systems generally store data as files organized by a file system. When a software program needs to store data in a persistent or non-volatile manner, the program typically communicates with the file system to store the data in a file on a storage device such as a hard disk drive, tape drive, optical drive, or other storage device operable to store data in a non-volatile manner. To change the data in the file or write new data to the file, the program may issue a write request to the file system. In response, the file system updates the file stored on the storage device to reflect the change.
In some applications it is desirable to simulate the effects of performing write operations that change a file but without actually modifying the file. As one example, consider a system in which a backup copy of a large database file has been stored. It may be desirable to use the backup copy of the database to restore information from the database. However, in order to perform a restore operation, the database management software for some types of database requires change logs to be played or requires other operations that would modify the backup copy of the database. In some applications it may be undesirable to modify the backup copy of the database, e.g., since the backup copy may need to remain in its original state in case it is needed to perform a full recovery of the database. It may also be undesirable to create a new copy of the database from the backup copy for the purpose of performing the restore operation, e.g., since the database may be very large.